// 导出类型和接口
export * from './types';
export * from './interface';
export * from './errors';
export * from './events';
export * from './permissions';

// 导出 Expo 插件（如果在 Expo 环境中）
export { default as withDlnaPlayer } from './expo';

// 导出实现
import { DlnaPlayerImplementation } from './implementation';
import { Platform } from 'react-native';

// 检测是否在 Expo 环境中
let isExpo = false;
try {
  // 动态导入，不再使用 require
  const importExpoConstants = async () => {
    try {
      const expo = await import('expo-constants');
      return expo.default;
    } catch {
      return null;
    }
  };
  
  // 立即执行设置
  importExpoConstants().then(Constants => {
    isExpo = !!Constants;
  });
} catch (error) {
  // 不是 Expo 环境，忽略错误
}

// 导出默认实例
export const DlnaPlayer = DlnaPlayerImplementation;
export default DlnaPlayer;

// 确保原生模块中的方法存在或提供默认实现
import { DlnaPlayerModule } from './utils';

if (!DlnaPlayerModule.searchDevices && DlnaPlayerModule.startScan) {
  DlnaPlayerModule.searchDevices = async () => {
    await DlnaPlayerModule.startScan();
    return DlnaPlayerModule.getDeviceList ? DlnaPlayerModule.getDeviceList() : [];
  };
}

// 导出设备缓存工具
export { deviceCache } from './utils';

// 导出环境检测工具
export const environment = {
  isExpo,
  isIOS: Platform.OS === 'ios',
  isAndroid: Platform.OS === 'android',
};

// DLNA播放器实例
// ... existing code ... 